home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ For TASM
/
USRGUIDE.PAK
/
EXCHMOD.ASM
< prev
next >
Wrap
Assembly Source File
|
1996-02-21
|
1KB
|
34 lines
; Turbo Assembler example. Copyright (c) 1993 By Borland International, Inc.
;
; EXCHMOD.ASM
;
; Usage: Run tasm on this file and link with exchmod.pas
.MODEL large,PASCAL
.CODE
Exchange PROC FAR var1:DWORD,var2:DWORD,count:WORD
PUBLIC Exchange;
cld ;exchange goes upward
mov dx,ds ;save DS
lds si,var1 ;get first address
les di,var2 ;get second address
mov cx,count ;get number of bytes to move
shr cx,1 ;get word count (low bit -> carry)
jnc ExchangeWords ;if no odd byte, enter loop
mov al,es:[di] ;read odd byte from var2
movsb ;move a byte from var1 to var2
mov [si-1],al ;write var2 byte to var1
jz Finis ;done if only 1 byte to exchange
ExchangeWords:
mov bx,-2 ;BX is a handy place to keep -2
ExchangeLoop:
mov ax,es:[di] ;read a word from var2
movsw ;do a move from var1 to var2
mov [bx][si],ax ;write var2 word to var1
loop ExchangeLoop ;repeat "count div 2" times
Finis:
mov ds,dx ;get back Turbo's DS
ret
Exchange ENDP
END